home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
-
- #define kLoopNumber 100
-
-
- /* Standard inits */
-
- static void InitToolbox(void) {
- InitGraf (&qd.thePort);
- InitFonts ();
- FlushEvents (everyEvent,0);
- InitWindows ();
- InitMenus ();
- TEInit ();
- InitDialogs (nil);
- InitCursor ();
- } /*InitToolbox*/
-
-
- #define kBlockSize 100000L
-
-
- void main(void)
- {
- long timeBefore,timeAfter;
- long loop, memLoop, memLoopLimit;
- Ptr sourcePtr, destinationPtr;
- char *charSourcePtr, *charDestPtr;
- short *shortSourcePtr, *shortDestPtr;
- long *longSourcePtr, *longDestPtr;
-
- InitToolbox();
-
- sourcePtr = NewPtr(kBlockSize);
- destinationPtr = NewPtr(kBlockSize);
- if (sourcePtr == nil || destinationPtr == nil)
- {
- printf("Couldn't allocate memory.");
- }
- else
- {
- memLoopLimit = kBlockSize / sizeof(char) / 16;
- timeBefore = TickCount();
- for (loop = 0; loop < kLoopNumber; loop++)
- {
- charSourcePtr = sourcePtr;
- charDestPtr = destinationPtr;
- for (memLoop = 0; memLoop < memLoopLimit; memLoop++)
- {
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- *charDestPtr++ = *charSourcePtr++;
- }
- }
- timeAfter = TickCount();
- printf("Chars: %ld ticks for %ld copies.\n", timeAfter-timeBefore, (long)kLoopNumber);
-
-
- memLoopLimit = kBlockSize / sizeof(short) / 8;
- timeBefore = TickCount();
- for (loop = 0; loop < kLoopNumber; loop++)
- {
- shortSourcePtr = (short *) sourcePtr;
- shortDestPtr = (short *) destinationPtr;
- for (memLoop = 0; memLoop < memLoopLimit; memLoop++)
- {
- *shortDestPtr++ = *shortSourcePtr++;
- *shortDestPtr++ = *shortSourcePtr++;
- *shortDestPtr++ = *shortSourcePtr++;
- *shortDestPtr++ = *shortSourcePtr++;
- *shortDestPtr++ = *shortSourcePtr++;
- *shortDestPtr++ = *shortSourcePtr++;
- *shortDestPtr++ = *shortSourcePtr++;
- *shortDestPtr++ = *shortSourcePtr++;
- }
- }
- timeAfter = TickCount();
- printf("Shorts: %ld ticks for %ld copies.\n", timeAfter-timeBefore, (long)kLoopNumber);
-
-
- memLoopLimit = kBlockSize / sizeof(long) / 4;
- timeBefore = TickCount();
- for (loop = 0; loop < kLoopNumber; loop++)
- {
- longSourcePtr = (long *) sourcePtr;
- longDestPtr = (long *) destinationPtr;
- for (memLoop = 0; memLoop < memLoopLimit; memLoop++)
- {
- *longDestPtr++ = *longSourcePtr++;
- *longDestPtr++ = *longSourcePtr++;
- *longDestPtr++ = *longSourcePtr++;
- *longDestPtr++ = *longSourcePtr++;
- }
- }
- timeAfter = TickCount();
- printf("Longs: %ld ticks for %ld copies.\n", timeAfter-timeBefore, (long)kLoopNumber);
-
-
- timeBefore = TickCount();
- for (loop = 0; loop < kLoopNumber; loop++)
- BlockMove(sourcePtr, destinationPtr, kBlockSize);
- timeAfter = TickCount();
- printf("BlockMove: %ld ticks for %ld copies.\n", timeAfter-timeBefore, (long)kLoopNumber);
-
- }
- } /*main*/
-